package main

import (
	"fmt"
	"sync"
)

const N = 10

// 输出结果是不确定的， 因为 for循环 和 协程执行顺序不确定，
// 我当时选择的是 1 map[10:10]
func main() {
	m := make(map[int]int)
	syncwg := &sync.WaitGroup{}
	syncmu := &sync.Mutex{}
	syncwg.Add(N)
	for i := 0; i < N; i++ {
		go func() {
			defer syncwg.Done()
			syncmu.Lock()
			m[i] = i
			syncmu.Unlock()
		}()
	}
	syncwg.Wait()
	fmt.Println(len(m), m)
}
